1 module mruby.hash; 2 3 import mruby.mrb_class; 4 import mruby.object; 5 import mruby.variable; 6 import mruby.value; 7 import mruby; 8 9 extern (C): 10 11 struct kh_ht; 12 13 struct RHash 14 { 15 enum mrb_vtype 16 { 17 MRB_TT_FALSE = 0, 18 MRB_TT_FREE = 1, 19 MRB_TT_TRUE = 2, 20 MRB_TT_FIXNUM = 3, 21 MRB_TT_SYMBOL = 4, 22 MRB_TT_UNDEF = 5, 23 MRB_TT_FLOAT = 6, 24 MRB_TT_CPTR = 7, 25 MRB_TT_OBJECT = 8, 26 MRB_TT_CLASS = 9, 27 MRB_TT_MODULE = 10, 28 MRB_TT_ICLASS = 11, 29 MRB_TT_SCLASS = 12, 30 MRB_TT_PROC = 13, 31 MRB_TT_ARRAY = 14, 32 MRB_TT_HASH = 15, 33 MRB_TT_STRING = 16, 34 MRB_TT_RANGE = 17, 35 MRB_TT_EXCEPTION = 18, 36 MRB_TT_FILE = 19, 37 MRB_TT_ENV = 20, 38 MRB_TT_DATA = 21, 39 MRB_TT_FIBER = 22, 40 MRB_TT_MAXDEFINE = 23 41 } 42 mrb_vtype tt; 43 uint color; 44 uint flags; 45 RClass* c; 46 RBasic* gcnext; 47 iv_tbl* iv; 48 kh_ht* ht; 49 } 50 51 mrb_value mrb_hash_new_capa (mrb_state*, int); 52 mrb_value mrb_hash_new (mrb_state* mrb); 53 void mrb_hash_set (mrb_state* mrb, mrb_value hash, mrb_value key, mrb_value val); 54 mrb_value mrb_hash_get (mrb_state* mrb, mrb_value hash, mrb_value key); 55 mrb_value mrb_hash_fetch (mrb_state* mrb, mrb_value hash, mrb_value key, mrb_value def); 56 mrb_value mrb_hash_delete_key (mrb_state* mrb, mrb_value hash, mrb_value key); 57 mrb_value mrb_hash_keys (mrb_state* mrb, mrb_value hash); 58 mrb_value mrb_check_hash_type (mrb_state* mrb, mrb_value hash); 59 mrb_value mrb_hash_empty_p (mrb_state* mrb, mrb_value self); 60 mrb_value mrb_hash_clear (mrb_state* mrb, mrb_value hash); 61 kh_ht* mrb_hash_tbl (mrb_state* mrb, mrb_value hash); 62 void mrb_gc_mark_hash (mrb_state*, RHash*); 63 size_t mrb_gc_mark_hash_size (mrb_state*, RHash*); 64 void mrb_gc_free_hash (mrb_state*, RHash*);